export default {
  data() {
    return {
      position: [],
      button: [],
    };
  },
  computed: {
    pos() {
      return JSON.stringify(this.position);
    },
    btn() {
      return JSON.stringify(this.button);
    },
  },
  watch: {
    show(newVal) {
      if (this.autoClose) return;
      let valueObj = this.position[0];
      if (!valueObj) {
        this.init();
        return;
      }
      valueObj.show = newVal;
      this.$set(this.position, 0, valueObj);
    },
  },
  created() {
    if (this.swipeaction.children !== undefined) {
      this.swipeaction.children.push(this);
    }
  },
  mounted() {
    this.init();
  },
  beforeDestroy() {
    this.swipeaction.children.forEach((item, index) => {
      if (item === this) {
        this.swipeaction.children.splice(index, 1);
      }
    });
  },
  methods: {
    init() {
      setTimeout(() => {
        this.getSize();
        this.getButtonSize();
      }, 50);
    },
    closeSwipe(e) {
      if (!this.autoClose) return;
      this.swipeaction.closeOther(this);
    },

    change(e) {
      this.$emit('change', e.open);
      let valueObj = this.position[0];
      if (valueObj.show !== e.open) {
        valueObj.show = e.open;
        this.$set(this.position, 0, valueObj);
      }
    },
    onClick(index, item) {
      this.$emit('click', {
        content: item,
        index,
      });
    },
    getSize() {
      const views = uni.createSelectorQuery().in(this);
      views
        .selectAll('.selector-query-hock')
        .boundingClientRect((data) => {
          if (this.autoClose) {
            data[0].show = false;
          } else {
            data[0].show = this.show;
          }
          this.position = data;
        })
        .exec();
    },
    getButtonSize() {
      const views = uni.createSelectorQuery().in(this);
      views
        .selectAll('.button-hock')
        .boundingClientRect((data) => {
          this.button = data;
        })
        .exec();
    },
  },
};
